SQL

[SQL] bulk insert

这是一篇关于导入csv数据到数据库的介绍

Posted by Leung ZhengHua on 2018-01-31

本文总点击量

Bulk Insert详细用法参见Bulk Insert命令详细

我的数据是从R写入CSV文件的,需要再从CSV文件导入到数据库里面。为什么需要这么麻烦呢,直接从R写入数据库不行吗,数据量大的时候还真不行,利用bulk insert适用于数据量特别大的情形。

解决步骤:

  • step1:设计数据表的列名和类型,数据表名称,主键,NULL约束等

  • step2:检查csv数据类型,因为在尝试过程中发现某些列的值为Inf,不能匹配到数据表的列类型(float),导致出错

  • step3:利用bulk insert语句将csv数据导入到数据库

测试中的sql脚本见下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
alter table [stock_data].[dbo].[test] alter COLUMN [OP] varchar(100)
alter table [stock_data].[dbo].[test] alter COLUMN [Inv] varchar(100)
BULK INSERT stock_data.dbo.test FROM 'I:\anqi\DataCollection\数据库衍生计算\ratio.csv'
WITH (
FIELDTERMINATOR = ',',
CHECK_CONSTRAINTS,
FIRSTROW=2
)
/* 修改OP列中Inf值为NULL,再把OP列转换为float类型*/
update [stock_data].[dbo].[test] set OP=NULL where OP='Inf'
alter table [stock_data].[dbo].[test] alter COLUMN [OP] float
update [stock_data].[dbo].[test] set Inv=NULL where OP='Inf'
alter table [stock_data].[dbo].[test] alter COLUMN Inv float